/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"8C239239-B84E-498C-9C22-BB187D3A6A1F",variableType:4}
 */
var gPuntoVenta = 1;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"A2EE5B51-0B31-44B2-A35A-DDF589C18BB1",variableType:8}
 */
var zparam_limite_factura_afip = 1000;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"49DA201B-D2BE-436D-8C2E-2A530600AFD8",variableType:8}
 */
var acum_saldo = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"1BDCC999-69C8-4B8F-B5E7-E1E5848D0684",variableType:4}
 */
var cod_ret_ganancias = 6;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"16789B76-B319-4F35-A8B6-B205B2A12C28",variableType:4}
 */
var cod_ret_ibrutos = 50;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"18DA7CCE-BDA0-4B19-8781-D9635ED8D8F6",variableType:4}
 */
var cod_ret_iva = 5;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"D780795F-7D2B-42D9-82C9-E8277A8BEE04",variableType:4}
 */
var cod_ret_suss = 7;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"77388C16-FA23-4465-A399-635A426C6C22",variableType:4}
 */
var dcobran = 1;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"17ECF31F-4868-48DD-93BB-0A33BB3CCE9F",variableType:4}
 */
var dventas = 1;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"21AA76A3-87A8-4AD1-A9B1-5C04E49CD161",variableType:4}
 */
var es_fc_exportacion = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"6E4FFA0B-D350-44AA-A517-F0077EFB4608",variableType:4}
 */
var fact_filas = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"32A525B5-C162-4BB4-8BCA-B162B3622956"}
 */
var fact_letra = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"0909C4AE-F410-46AF-A62F-76F72E9F5FCF",variableType:4}
 */
var fact_nro_factura = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"E4EB1E60-0322-4742-9460-6857ED8B4802",variableType:4}
 */
var fact_sucursal = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"352D53B6-7D7F-45BC-BE45-C5F7D4BA8C41",variableType:4}
 */
var gCli_domic_id = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"6822C339-3751-4599-B359-36E42F4A34D1",variableType:4}
 */
var gCliente = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"71140C42-AF6F-4F10-B3BE-08E806D9460C",variableType:4}
 */
var gCliente_anterior = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"79695f61-d93e-45ad-832b-dd45ed4c1bc6",variableType:4}
 */
var gClienteDesde = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"7EB1DD9F-8383-4D1D-8AC7-2C1C2AFAF262"}
 */
var gClienteDesdeNombre = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"66a02fed-bb68-4c9a-ada9-ed9bd6688f5f",variableType:4}
 */
var gClienteHasta = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"B702E8AE-3677-4B46-8B6C-E78AA38C1CEC"}
 */
var gClienteHastaNombre = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"905623ED-514F-43E1-9674-C1ED45E0FEE8",variableType:8}
 */
var gIva = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"0BFF2586-1549-4018-93F3-63443364C788",variableType:8}
 */
var gIva_factura = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"5BA3101E-5DC8-4B56-98EB-C04A41E6BD1E"}
 */
var gLetra = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"329c4518-d21f-425b-99bb-ba4e8ad6228e"}
 */
var gLoginCuit = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"5BF1E263-39AC-4E36-9145-17940E0C65D7"}
 */
var gNombre_cond_pago = 'cond_pago';

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"0639A3A2-DDEF-4ACA-9749-3AC38D676133",variableType:8}
 */
var gPorc_iva_emisor = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"52D7B8C0-182D-4DCF-98F2-499E4C4D8C04",variableType:8}
 */
var gSubtotal_1 = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"CA995BC0-6AD0-4924-8EB5-BC067C17F7F4",variableType:8}
 */
var gSubtotal_2 = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"1970A413-2C8D-41A0-9921-A91C2001A9EF"}
 */
var gTexto = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"ca824779-921e-4631-bbba-210109c455e8"}
 */
var gTipo = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"29AC8F42-6387-4B2E-8983-C4784BFFA264",variableType:4}
 */
var gTipo_iva_emisor = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"D8A9A8F3-896B-4AC6-8AA1-ABCA598EE3B7",variableType:4}
 */
var gtipo_pago = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"3915E03A-48E5-4E90-B105-B37912FB8C81",variableType:8}
 */
var gTotal = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"4DF68AE2-6C09-47C2-9E94-F814CE5259CA",variableType:8}
 */
var gtotal_saldo_res = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"26FC484E-26B2-4584-860F-D4F658E98C49",variableType:8}
 */
var gtotal_viajes = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"9AFA8804-CFF0-4F1E-B0E8-2A96DFAEB175",variableType:4}
 */
var gvalor_cuatro = 4;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"E590400C-0E3C-4E38-A9D5-BE1A6DDD0A99",variableType:4}
 */
var gvalor_dos = 2;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"5928399A-4ADD-4854-8B59-A73FBC55871D",variableType:4}
 */
var gvalor_tres = 3;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"DD8EB649-DEA6-427C-A1F7-EAE1383F9324",variableType:4}
 */
var iva_del_producto = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"96A8D6BA-1101-41CC-A5EF-FA8A73025EDD",variableType:4}
 */
var marca_primer_find = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"88FD3D5C-09B4-4C26-92FA-F3A93296F1A0",variableType:8}
 */
var multi = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"CC49686F-7C72-4FF1-94D7-3FDE98698737",variableType:8}
 */
var multiplica = 0;

/**
 *
 * @properties={typeid:24,uuid:"20A97DB8-EF6B-4417-A1E6-316C8DE5CA86"}
 */
function gInicio_ventas() 
{
	globals.gParamsAmbos(globals.gUservID, globals.gUsuarioID);
	globals.vendedor_usuario(globals.gUservID);
	globals.configuraCharConcat()
	// define sucursal para todos los documentos (pedidos, remitos, ord pago,etc.) excepto factura
	globals.gSucursal = uservs_to_uservs.sucursal
	// define punto de venta que sirve para facturas, NC y N Deb
	var $pvta	= gusuario_to_usuarios.punto_venta
	if (!$pvta)
		$pvta = uservs_to_uservs.sucursal
	globals.gPuntoVenta = $pvta
	if (uservs_to_uservs.tasa_iva_id)
		globals.gPorc_iva_emisor = uservs_to_uservs.uservs_to_tasa_iva.tasa_iva_porc
	globals.gTipo_iva_emisor	= uservs_to_uservs.tipo_iva_id
	globals.gFechaDesde_resumen	= new Date() 
	globals.gFechaDesde_resumen	= globals.gFechaDesde_resumen.setDate (globals.gFechaDesde_resumen.getDate() - 90);
	globals.gFechaDesde			= globals.gFechaDesde_resumen;
	globals.gFechaHasta			= new Date();
}

/**
 *
 * @properties={typeid:24,uuid:"04136589-8D79-4B88-B34E-68B00ADEEA40"}
 */
function gvalidar_rec_detalle_comprob_importe() 
{
	if (arguments[0] <=0)
		return false;
	else 
		return true;
}

/**
 * @properties={typeid:24,uuid:"848B5E03-C5D1-45E1-9C77-9588E50A0897"}
 */
function gBajaFactura() {
	var facturas = forms.fac_baja_2.foundset
	
	if (facturas.fac_cabecera_to_ctacte_cl.importe == facturas.fac_cabecera_to_ctacte_cl.saldo)
	{
		databaseManager.startTransaction()
		if (forms.fac_baja_2.fAnulaBorra == 0)  // borra
		{	
			facturas.fac_cabecera_to_ctacte_cl.deleteAllRecords() // 01/08/2012
		}
		else
		{
			if (facturas.fac_cabecera_to_ctacte_cl.getSize() != 0)
			{
				facturas.fac_cabecera_to_ctacte_cl.importe = 0
				facturas.fac_cabecera_to_ctacte_cl.saldo = 0
				facturas.fac_cabecera_to_ctacte_cl.neto = 0
				facturas.fac_cabecera_to_ctacte_cl.iva = 0
				facturas.fac_cabecera_to_ctacte_cl.iva_porc = 0
				facturas.fac_cabecera_to_ctacte_cl.neto_no_gravado = 0
				facturas.marca_anulacion=1 
			}  
		}
		if (forms.fac_baja_2.fAnulaBorra == 0) // borra fac_detalle y fac_cabecera 
		{	
			facturas.fac_cabecera_to_fac_detalle.deleteAllRecords()
			facturas.deleteRecord()
		} 
		
		if (databaseManager.commitTransaction() == true)
		{
			if (forms.fac_baja_2.fAnulaBorra == 0) // borra 
				globals.DIALOGS.showInfoDialog('Exito','Factura dada de baja correctamente','OK','CerrarForm');
			else
				globals.DIALOGS.showInfoDialog('Exito','Factura anulada correctamente','OK','CerrarForm');
		}
		else
		{
			databaseManager.rollbackTransaction()
			globals.DIALOGS.showWarningDialog('Aviso','No se pudo completar la operación','OK','CerrarForm')
			return 0
		}
		databaseManager.refreshRecordFromDatabase(facturas,-1)
	}
	else
		globals.DIALOGS.showWarningDialog('Aviso','El importe y el saldo son distintos. IMPORTE: '+facturas.total+' SALDO: '+facturas.fac_cabecera_to_ctacte_cl.saldo,'OK','CerrarForm')
	return 1
}

/**
 * @properties={typeid:24,uuid:"26A28626-64EC-4629-81FD-28F69324FEA5"}
 * @AllowToRunInFind
 */
function gBajaRecibo() {
	var cabecera 		= forms.rec_baja_2.foundset
	var detalle 		= cabecera.rec_cabecera_to_rec_detalle
	var comprobantes 	= cabecera.rec_cabecera_to_rec_detalle_comprob
	var retenciones 	= cabecera.rec_cabecera_to_rec_detalle_retencion
	var cta_cte 		= cabecera.rec_cabecera_to_ctacte_cl
	
	/** @type {JSFoundSet<db:/infocom/saldos_caja>}*/
	var fs_saldos = databaseManager.getFoundSet('infocom','saldos_caja')
	var estado = fs_saldos.find()
	if (estado==true)
	{
		fs_saldos.cuentas_cyb_id 	= globals.zparam_caja_default // es siempre caja
		fs_saldos.moneda_id			= globals.zparam_moneda_default
		var found = fs_saldos.search()
		if (found == 1)  
			fs_saldos.setSelectedIndex(1)
		else
		{
			globals.DIALOGS.showWarningDialog('Aviso','No se encontró cuenta de caja y banco','OK','CerrarForm')
			return 0
		}
	}
	else
	{
		globals.DIALOGS.showWarningDialog('Aviso','No se pudo completar la operación','OK','CerrarForm')
		return 0

	}
	    
	databaseManager.startTransaction()
		//DETALLE , MOVIM_CYB , CHEQUES , SALDOS
		if (detalle && detalle.getSize() != 0)
		{
			var i=1
			while (i <= detalle.getSize())
			{
				detalle.setSelectedIndex(i)
				detalle.rec_detalle_to_movim_cyb.deleteRecord()  // 01/08/2012
				
				if (detalle.rec_detalle_to_valores.es_cheque == 1)
				{  //  SALDO VALORES  Y CHEQUES
					detalle.rec_detalle_to_cheques.deleteRecord()
					//fs_saldos.saldo_valores-=detalle.importe;  // 23/11/2010
					fs_saldos.saldo_valores-=detalle.importe; // 23/11/2010
				}
				else
				{
					if (detalle.rec_detalle_to_valores.usa_cta_bco == 0)
					{ //  SALDO EFECTIVO
						//fs_saldos.saldo_efectivo-=detalle.importe; // 23/11/2010
						fs_saldos.saldo_efectivo-=detalle.importe;  // 23/11/2010
					}
				}
				if (forms.rec_baja_2.fAnulaBorra == 0) // borra detalle
					detalle.deleteRecord();
				else
					i++;
			}
		}  
		
		//COMPROBANTES
		if (comprobantes && comprobantes.getSize() != 0)
		{
			i=1
			while (i <= comprobantes.getSize())
			{
				comprobantes.setSelectedIndex(i)
				comprobantes.rec_detalle_comprob_to_ctacte_cl_id.saldo += comprobantes.importe
				if (forms.rec_baja_2.fAnulaBorra == 0) // borra comprobantes
				{
					comprobantes.deleteRecord()
				}
				else
					i++;
			}
		}  
			
		//RETENCIONES 
		if (retenciones && retenciones.getSize() != 0)
		{
			i=1
			while (i <=retenciones.getSize())
			{
				retenciones.setSelectedIndex(i)
				retenciones.rec_detalle_retencion_to_ctacte_cl.find()  
				retenciones.rec_detalle_retencion_to_ctacte_cl.cliente_id=cabecera.cliente_id
				retenciones.rec_detalle_retencion_to_ctacte_cl.search()
				retenciones.rec_detalle_retencion_to_ctacte_cl.deleteRecord() // 01/08/2012   borrar ctacte de retenciones  siempre
				if (forms.rec_baja_2.fAnulaBorra == 0) // borra
				{
					retenciones.deleteRecord()
				}
				else
					i++;
			}
			
		}
		
		// CUENTA CORRIENTE  
		if (cta_cte && cta_cte.getSize() != 0)
		{
			if (forms.rec_baja_2.fAnulaBorra == 0) // borra 
			{
				cta_cte.deleteRecord()
			}
			else
			{ 
				cta_cte.importe=0; 
				cta_cte.saldo=0; 
			} 
		} 
	
	//BORRAR CABECERA o MARCAR cabecera para anulacion
	if (forms.rec_baja_2.fAnulaBorra == 1) // anula
		cabecera.marca_anulacion = 1;
	else
		cabecera.deleteRecord();

	
	if (databaseManager.commitTransaction() == true)
	{
		// para anular o borrar se actualiza la ctacte de los comprob. y  saldos de caja => refrescar  // 19/11/2010
		databaseManager.refreshRecordFromDatabase(comprobantes.rec_detalle_comprob_to_ctacte_cl_id, -1); 
		databaseManager.refreshRecordFromDatabase(fs_saldos, -1); 
		
		if (forms.rec_baja_2.fAnulaBorra == 0) // borra 
		{
			globals.DIALOGS.showInfoDialog('Exito','Recibo dado de baja correctamente','OK');
		}
		else // anula 
		{ 
			databaseManager.refreshRecordFromDatabase(cta_cte, -1); 
			globals.DIALOGS.showInfoDialog('Exito','Recibo anulado correctamente','OK');
		}
	}	
	else
	{
		databaseManager.rollbackTransaction()
		globals.DIALOGS.showWarningDialog('Aviso','No se pudo completar la operación','OK')
	}
	return 1
}

/**
 *
 * @properties={typeid:24,uuid:"A7948CD3-34F1-4D9E-86EC-D3E1C93E606C"}
 */
function grecibo_diferencia() 
{  
	if (globals.gtipo_pago == 1) // normal    terminar 30/09/2010
		globals.gdiferencia = globals.gtotal_valores + globals.gtotal_retenciones - globals.gtotal_comprob; 
	else
		globals.gdiferencia = 0;
}

/**
 *
 * @properties={typeid:24,uuid:"6E602B44-952E-4E1B-BE0B-781DEDC61303"}
 */
function fac_cabecera_duplicacion(letra,sucursal,nro_factura,tipo_doc) 
{
	var query = 'select letra,sucursal,nro_factura,tipo_doc from fac_cabecera where letra = ? and sucursal = ? and nro_factura = ? AND tipo_doc = ? AND userv_id = ?';
	var args = new Array();
	args[0] = letra
	args[1] = sucursal
	args[2] = nro_factura
	args[3] = tipo_doc
	args[4] = globals.gUservID
	var dataset = databaseManager.getDataSetByQuery('infocom', query, args, 1);
	globals.fact_filas=dataset.getMaxRowIndex() // si es cero, la factura no existe
}

/**
 *
 * @properties={typeid:24,uuid:"66B03303-D42F-4F19-8670-494D1C57A10C"}
 */
function pedidos_duplicacion(letra,sucursal,nro_pedido) 
{
	var query = 'select letra,sucursal,nro_pedido from ped_cabecera where letra = ? and sucursal = ? and nro_pedido = ? AND userv_id = ?';
	var args = new Array();
	args[0] = letra
	args[1] = sucursal
	args[2] = nro_pedido
	args[3] = globals.gUservID
	var dataset = databaseManager.getDataSetByQuery('infocom', query, args, 1);
	return dataset.getMaxRowIndex() // si es cero, la factura no existe
}

/**
 * @properties={typeid:24,uuid:"0126B5EC-9CAB-44B2-903E-9F93DB948FBB"}
 */
function remitos_duplicacion(letra,sucursal,nro_remito) 
{
	var query = 'select letra,sucursal,nro_remito from rem_cabecera where letra = ? and sucursal = ? and nro_remito = ? AND userv_id = ?';
	var args = new Array();
	args[0] = letra
	args[1] = sucursal
	args[2] = nro_remito
	args[3] = globals.gUservID
	var dataset = databaseManager.getDataSetByQuery('infocom', query, args, 1);
	return dataset.getMaxRowIndex() // si es cero, la factura no existe
}

/**
 * @properties={typeid:24,uuid:"91638073-80BF-4C3A-A23E-706C306A3F1B"}
 */
function presupuestos_duplicacion(letra,sucursal,nro_presupuesto) 
{
	var query = 'select letra,sucursal,nro_presupuesto from presup_cabecera where letra = ? and sucursal = ? and nro_presupuesto = ? AND userv_id = ?';
	var args = new Array();
	args[0] = letra
	args[1] = sucursal
	args[2] = nro_presupuesto
	args[3] = globals.gUservID
	var dataset = databaseManager.getDataSetByQuery('infocom', query, args, 1);
	return dataset.getMaxRowIndex() // si es cero, la factura no existe
}

/**
 * @properties={typeid:24,uuid:"5AFFA5ED-C9A5-428A-9244-E3915D7D940F"}
 * @AllowToRunInFind
 */
function vendedor_usuario(p_usuario) 
{
	var vendedores = databaseManager.getFoundSet('infocom','vendedor')
	var estado_find=vendedores.find();
	if (estado_find==false)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No encontró vendedor al buscar con el usuario. (Find) ','OK','CerrarForm')
	}
	vendedores.usuario_id=p_usuario;  
	var found = vendedores.search();
	if (found != 0)
	{
		globals.gvendedor = vendedores.usuario_id; // esta variable solo se carga aqui=o debe modificarse mas
	}
}

/**
 * Calculate the row background color.
 *
 * @param {Number} index row index
 * @param {Boolean} selected is the row selected
 * @param {String} elementType element type (not supported in webclient)
 * @param {String} dataProviderID element data provider (not supported in webclient)
 * @param {String} formName form name
 * @param {JSRecord<db:/infocom/ped_cabecera>} record selected record
 * @param {Boolean} edited is the record edited
 *
 * @returns {String}
 *
 * @properties={typeid:24,uuid:"29EBE2E1-1E7B-4DC8-A6C6-C19C97889E4E"}
 */
function rowBGColorEstado(index, selected, elementType, dataProviderID, formName, record, edited) {

	if (selected)
		return '#59a1e3';  //04/11/2011
		//return '#5b8fe6';  //04/11/2011
		//return '#0d63c1';  //03/11/2011
	else 
		if (record.ped_estado < 2)
			return '#ff0000';
	else
		return '#FFFFFF';
}

/**
 * @properties={typeid:24,uuid:"E934B551-D925-4482-B1EE-9FFAAFF4F83C"}
 */
function gCreaFacElec(factura) {

	var fw = new Packages.java.io.FileWriter('c:/factura.txt');
	var bw = new Packages.java.io.BufferedWriter(fw);
	
	//Preparo la cabecera
	var $tipo_reg 		= '0'
	var $fecha_cpbte 	= utils.dateFormat(factura.fecha,'yyyyMMdd')
	var $tipo 			= factura.tipo_doc
	if (factura.letra == 'B')
		$tipo += 5
	var $tipo_cpbte 	= utils.numberFormat($tipo,'00') // 1-factura a 2-nota debito a 3-nota credito a 6-factura b 7-nota debito b 8-nota credito b
	var $punto_vta 		= utils.numberFormat(factura.sucursal,'0000')
	var $cbt_desde		= utils.numberFormat(factura.nro_factura,'00000000')
	var $cbt_hasta		= utils.numberFormat(factura.nro_factura,'00000000')
	var $concepto		= '1'
	var $tipo_doc		= '80' //por ser CUIT
	/** @type {String}*/
	var $cuit			= factura.fac_cabecera_to_clientes.cuit
	$cuit				= $cuit.replace('-', '')
	$cuit				= $cuit.replace('-', '')
	var $nro_doc		= $cuit
	var $imp_total		= utils.numberFormat(factura.total * 1000,'000000000000000')
	var $reservado		= utils.numberFormat(0,'000000000000000')
	var $imp_tot_conc	= utils.numberFormat(0,'000000000000000')
	var $imp_neto		= utils.numberFormat(factura.subtotal1 * 1000,'000000000000000')
	var $imp_iva		= utils.numberFormat(factura.iva1_imp * 1000,'000000000000000')
	var $imp_trib		= utils.numberFormat(0,'000000000000000')
	var $imp_op_ex		= utils.numberFormat(0,'000000000000000')
	var $moneda_id		= 'PES'
	var $moneda_ctz		= utils.numberFormat(1 * 1000000,'0000000000')
	var $fecha_venc_pago = utils.dateFormat(factura.fecha_vencimiento,'yyyyMMdd')
	var $cae			= utils.numberFormat(0,'000000000000000')
	var $fecha_venc_cae	= utils.numberFormat(0,'00000000')
	
	var linea = $tipo_reg + $fecha_cpbte + $tipo_cpbte + $punto_vta +
				$cbt_desde + $cbt_hasta + $concepto + $tipo_doc +
				$nro_doc + $imp_total + $reservado + $imp_tot_conc +
				$imp_neto + $imp_iva + $imp_trib + $imp_op_ex +
				$moneda_id + $moneda_ctz + $fecha_venc_pago + 
				$cae + $fecha_venc_cae
	//Guardo el primer renglon
	bw.write(linea,0,linea.length)
	bw.newLine()

	//Preparo el iva
	$tipo_reg 	= '2'
	var $iva_id
	switch (factura.iva1_porc)
	{
		case 0: 
		{
			$iva_id = 3
			break;
		}
		
		case 10,5: 
		{
			$iva_id = 4
			break;
		}
		
		case 21:
		{
			$iva_id = 5
			break;
		}
				
		case 27:
		{
			$iva_id = 6
			break;
		}
	}
	var $id = $iva_id //3- 0% 4- 10.5% 5- 21% 6- 27%
	
	linea = $tipo_reg + $id + $imp_neto + $imp_iva
	bw.write(linea,0,linea.length)
	
	bw.close()
	fw.close()			
}

/**
 * @param {JSRecord<db:/infocom/fac_cabecera>} factura
 * @param {Number} tipo
 * 
 * @properties={typeid:24,uuid:"ABF8C2C6-3B48-4806-9378-01796DD9EB79"}
 * @AllowToRunInFind
 */
function gAltaRemitoAutomatico(factura, tipo) {
	var $idx 	= factura.fac_cabecera_mino_to_rem_cabecera.newRecord()
	var $remito = factura.fac_cabecera_mino_to_rem_cabecera.getRecord($idx)
	
	databaseManager.copyMatchingFields(factura,$remito)
	$remito.deposito 		= globals.gdeposito
	$remito.letra			= 'R'
	$remito.marca_anulacion = 0
	$remito.rem_estado		= globals.zconf_rem_facturado
	$remito.tipo			= tipo
	
	/** @type {JSFoundSet<db:/infocom/numeracion_cl>}*/
	var fs_nro_rem = databaseManager.getFoundSet('infocom','numeracion_cl')
	fs_nro_rem.find()
	fs_nro_rem.sucursal			= $remito.sucursal
	fs_nro_rem.letra			= $remito.letra
	fs_nro_rem.cod_comprobante	= tipo
	var found = fs_nro_rem.search()
	if (found != 1)
    {
	   globals.DIALOGS.showWarningDialog('Aviso','Sucursal o Letra o Tipo de Remito incorrectos','OK');
	   return false;  
    }
	var $nro_aux = fs_nro_rem.ultimo_numero + 1
	
	var $cant = factura.fac_cabecera_to_fac_detalle.getSize()
	for (var i = 1 ; i <= $cant ; i++)
	{
		var $fac = factura.fac_cabecera_to_fac_detalle.getRecord(i)
		$idx = $remito.rem_cabecera_to_rem_detalle.newRecord()
		var $rem = $remito.rem_cabecera_to_rem_detalle.getRecord($idx)
		
		databaseManager.copyMatchingFields($fac,$rem)
		$rem.cantidad_pendiente_fac = 0
		$rem.cantidad				= $fac.cantidad_dec
		
		globals.gRemitosStock($remito, $rem, $nro_aux)
	}
	
	$remito.nro_remito = $nro_aux
	fs_nro_rem.ultimo_numero++
	return true
}


/**
 * @param {JSRecord<db:/infocom/rem_cabecera>} cab
 * @param {JSRecord<db:/infocom/rem_detalle>} dtl
 * @param {Number} nro
 * 
 * @properties={typeid:24,uuid:"CB25C3FA-0D3A-49BB-8331-8EF98EA80BE4"}
 */
function gRemitosStock(cab, dtl, nro) {
	
	var fs_hist = databaseManager.getFoundSet('infocom','hist_stock')

	fs_hist.newRecord();
	fs_hist.cantidad			= dtl.cantidad;
	fs_hist.cliente_id			= cab.cliente_id;
	fs_hist.producto_id			= dtl.producto_id;
	fs_hist.fecha				= cab.fecha;
	fs_hist.tipo				= globals.zconf_hist_egre_cliente;  //2=egreso cliente
	fs_hist.cantidad_signo		= dtl.cantidad * (-1); // grabar con signo=NO hacer calculation
	fs_hist.deposito_id			= cab.deposito;
	fs_hist.moneda_id			= globals.zparam_moneda_default;
	fs_hist.comprob_tipo		= globals.zconf_numeracion_remito; 
	fs_hist.comprob_sucursal 	= cab.sucursal;
	fs_hist.comprob_nro			= nro
	fs_hist.comprob_letra		= cab.letra;
	
	if (dtl.rem_detalle_to_productos.controla_stock)
	{	
		dtl.rem_detalle_to_existencias.exi_cantidad 	-= dtl.cantidad
		dtl.rem_detalle_to_productos.stock_existencia 	-= dtl.cantidad
	}
}

/**
 * Called when the valuelist needs data, it has 3 modes.
 * real and display params both null: return the whole list
 * only display is specified, called by a typeahead, return a filtered list
 * only real value is specified, called when the list doesnt contain the real value for the give record value, this will insert this value into the existing list
 *
 * @param {String} displayValue The value of a lookupfield that a user types
 * @param realValue The real value for a lookupfield where a display value should be get for
 * @param {JSRecord} record The current record for the valuelist.
 * @param {String} valueListName The valuelist name that triggers the method. (This is the FindRecord in find mode, which is like JSRecord has all the columns/dataproviders, but doesn't have its methods)
 * @param {Boolean} findMode True if foundset of this record is in find mode
 * @param {Boolean} rawDisplayValue The raw displayValue without being converted to lower case
 *
 * @returns {JSDataSet} A dataset with 1 or 2 columns display[,real]
 *
 * @properties={typeid:24,uuid:"4809E2AE-E185-4F37-9CC5-0473BF1D1B0D"}
 */
function getDataSetForClientes(displayValue, realValue, record, valueListName, findMode, rawDisplayValue) {
	var $sql = 'SELECT razon_social,cliente_id FROM clientes WHERE userv_id = ?'
	/** @type {Array<Object>}*/
	var $args = [globals.gUservID]
	
	var $max
	if (displayValue == null && realValue == null) 
	{
		$max = 100
	} 
	else if (displayValue != null) 
	{
		$sql += ' AND upper(razon_social) like upper(?)'
		$args.push('%' + displayValue + '%')
		$max = 100
	} 
	else if (realValue != null) 
	{
		$sql += ' AND cliente_id = ?'
		$args.push(realValue)
		$max = 1
	}
	$sql += ' ORDER BY razon_social'
	var $ds = databaseManager.getDataSetByQuery('infocom',$sql,$args,$max)
	return $ds;
}
